// You are given two 32-bit numbers, N and M, and two bit positions, i and j. 
// Write a method to insert M into N such that M starts at bit j and ends at bit i.
// You can assume that the bits j through i have enough space to fit all of M.
// That is, if M = 10011, you can assume that there are at least 5 bits between j and i.
// You would not, for example, have j=3 and i=2, because M could not fully fit between bit 3 and bit 2.
// EXAMPLE
// Input:  N = 10000000000, M = 10011, i=2,j=6
// Output: N = 10001001100
// Author: Fan Yang


#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

void main()
{
	int N, M, i, j,temp1,temp2,mask=0;
	char s[33];
	printf("Input two numbers and two positions:");
	scanf("%d%d%d%d",&N,&M,&i,&j);
	temp1=M<<i;
	for(int k=i;k<=j;k++)
	{
		mask+=1<<k;
	}
	mask=~mask;
	temp2=N & mask;
	N=temp2 | temp1;
	itoa(N, s, 2);
	printf("%s",s);
}